『実用 Git 第3版』
https://gyazo.com/93438edfad3d0e025823ac808e45646b
2024/3/8
3,6,7,9章読みたい
賞賛の声
監訳者まえがき
まえがき
第I部 Gitの思考法
1章 Git入門
1.1 Gitのコンポーネント
1.2 Gitの特徴
1.3 Gitのコマンドライン
1.4 gitコマンド入門
1.4.1 Gitを使う前の準備
1.4.2 ローカルリポジトリの操作
1.4.3 共有リポジトリの操作
1.4.4 設定ファイル
1.5 まとめ
2章 基本コンセプト
2.1 リポジトリ
2.1.1 Gitオブジェクトストア
2.1.2 インデックス
2.1.3 コンテンツアドレッサブルデータベース
2.1.4 Gitはコンテンツを追跡する
2.1.5 パス名とコンテンツ
2.1.6 パックファイル
2.2 Gitオブジェクトストアの可視化
2.3 Gitの内部動作:コンセプトはどのように機能しているか
2.3.1 .gitディレクトリの内部
2.3.2 ブロブオブジェクトとハッシュ
2.3.3 ツリーオブジェクトとファイル
2.3.4 GitがSHA-1を使っていることにはどのような意味があるか
2.3.5 ツリーの階層
2.3.6 コミットオブジェクト
2.3.7 タグオブジェクト
2.4 まとめ
第II部 Gitの基礎知識
3章 ブランチ
3.1 Gitでブランチを使う理由
3.2 ブランチングのガイドライン
3.2.1 ブランチ名
3.2.2 ブランチ名のべしべからず集
3.3 ブランチの管理
3.3.1 ブランチの使い方
3.3.2 ブランチの作り方
3.3.3 ブランチ名リストの表示
3.3.4 ブランチとコミットの表示
3.3.5 ブランチの切り替え(チェックアウト)
3.3.6 別のブランチへの変更のマージ
3.3.7 新ブランチの作成とチェックアウトの方法
3.3.8 detached HEAD
3.3.9 ブランチの削除
3.4 まとめ
4章 コミット
4.1 コミット:変更を記録する単位
4.2 アトミックなチェンジセット
4.3 コミットの識別方法
4.3.1 絶対コミット名
4.3.2 refとsymref
4.3.3 相対コミット名
4.4 コミット履歴
4.4.1 以前のコミットの表示
4.4.2 コミットグラフ
4.4.3 コミット範囲
4.5 まとめ
5章 ファイル管理とインデックス
5.1 インデックスの重要性
5.2 Gitにおけるファイルの分類
5.3 git addの使い方
5.4 git commitを使うときの注意
5.4.1 git commit --allの使い方
5.4.2 コミットログメッセージの作成
5.5 git rmの使い方
5.6 git mvの使い方
5.7 名称変更の追跡についてのメモ
5.8 .gitignoreファイル
5.9 まとめ
6章 マージ
6.1 マージの技術的な意味
6.2 マージの例
6.2.1 マージの準備
6.2.2 2つのブランチのマージ
6.2.3 コンフリクトのあるマージ
6.3 マージコミットの解決方法
6.3.1 コンフリクトを起こしているファイルの見つけ方
6.3.2 コンフリクトの調べ方
6.3.3 Gitのコンフリクト管理の方法
6.3.4 コンフリクト解決の仕上げ
6.3.5 マージの中止、取り消し
6.4 マージ戦略
6.4.1 縮退マージ
6.4.2 通常のマージ
6.4.3 特殊なマージ
6.4.4 マージ戦略の指定方法
6.4.5 マージドライバ
6.5 Gitのマージに対する考え方
6.5.1 マージとGitのオブジェクトモデル
6.5.2 スカッシュマージ
6.5.3 個々の変更を1つずつマージしていかないのはなぜか
6.6 まとめ
7章 差分
7.1 git diffコマンドの書式
7.2 git diffの簡単な実行例
7.3 git diffの出力の解釈方法
7.4 git diffとコミット範囲
7.5 パス制限をともなうgit diff
7.6 Gitが差分を取り出す仕組み
7.7 まとめ
第III部 中級レベルのスキル
8章 コミットの検索
8.1 git bisectの使い方
8.2 git blameの使い方
8.3 つるはしの使い方
8.4 まとめ
9章 コミットの書き換え
9.1 コミット履歴書き換えの根拠
9.2 履歴の書き換えについて注意すべきこと
9.3 git revertの使い方
9.4 HEADコミットの変更
9.5 git resetの使い方
9.6 git cherry-pickの使い方
9.7 reset、revertとcheckoutの関係
9.8 コミットのリベース
9.8.1 git rebase -iの使い方
9.8.2 リベースかマージか
9.9 まとめ
10章 一時退避と参照ログ
10.1 一時退避
10.1.1 ユースケース:ワークフローの中断
10.1.2 ユースケース:上流の変更による仕掛りの作業の更新
10.1.3 ユースケース:一時退避した変更のブランチへのコンバージョン
10.2 参照ログ
10.3 まとめ
11章 リモートリポジトリ
11.1 ①リポジトリの概念
11.1.1 ベアリポジトリと開発リポジトリ
11.1.2 リポジトリのクローン作成
11.1.3 リモート
11.1.4 追跡ブランチ
11.1.5 ほかのリポジトリの参照
11.1.6 リモートリポジトリの参照
11.1.7 refspec
11.2 ②リモートリポジトリの使用例
11.2.1 権威リポジトリの作り方
11.2.2 初期リポジトリでのoriginリモートの作り方
11.2.3 自分のリポジトリでの開発
11.2.4 ローカルの変更のプッシュ
11.2.5 新しい開発者の追加
11.2.6 リポジトリの更新内容の取得
11.3 ③図で見るリモートリポジトリ開発サイクル
11.3.1 リポジトリのクローン作成
11.3.2 もう1つの履歴
11.3.3 fast-forwardではないプッシュ
11.3.4 もう1つの履歴のフェッチ
11.3.5 履歴のマージ
11.3.6 マージコンフリクト
11.3.7 マージ後の履歴のプッシュ
11.4 ④リモートの設定
11.4.1 git remoteの使い方
11.4.2 git configの使い方
11.4.3 設定ファイルの直接編集
11.5 ⑤追跡ブランチの操作
11.5.1 追跡ブランチの作り方
11.5.2 ブランチの前後関係
11.6 リモートブランチの追加と削除
11.7 ベアリポジトリとgit push
11.8 まとめ
12章 リポジトリの管理
12.1 リポジトリの公開
12.1.1 アクセス制御のあるリポジトリ
12.1.2 匿名で読み出せるリポジトリ
12.1.3 匿名で書き込めるリポジトリ
12.2 リポジトリの公開についてのアドバイス
12.3 リポジトリの構造
12.3.1 共有リポジトリ構造
12.3.2 分散リポジトリの構造
12.4 分散開発との折り合いのつけ方
12.4.1 公開履歴の変更
12.4.2 コミットと公開の分離
12.4.3 正しい履歴は1つではない
12.5 自分の位置の把握
12.5.1 上流と下流の間の情報の流れ
12.5.2 メンテナーと開発者という2つの役割
12.5.3 メンテナーと開発者の間のやり取り
12.5.4 役割の二重性
12.6 複数のリポジトリの操作
12.6.1 専用のワークスペース
12.6.2 自分のリポジトリの出発点をどこに置くか
12.6.3 上流リポジトリの変更
12.6.4 複数の上流リポジトリの利用
12.6.5 プロジェクトのフォーク
12.7 まとめ
第IV部 上級レベルのスキル
13章 パッチ
13.1 パッチを使う理由
13.2 パッチの作り方
13.3 パッチとトポロジカルソート
13.4 パッチのメール送信
13.5 パッチの適用
13.6 パッチのエラーへの対処
13.7 パッチとマージの違い
13.8 まとめ
14章 フック
14.1 フックのタイプ
14.2 フックを使うことに関する注意
14.3 フックのインストール
14.3.1 フックの例
14.3.2 独自フックの作り方
14.4 使えるフックの種類
14.4.1 コミット関連フック
14.4.2 パッチ関連フック
14.4.3 プッシュ関連フック
14.4.4 その他のローカルリポジトリのフック
14.5 フックすべきかせざるべきか
14.6 まとめ
15章 サブモジュール
15.1 gitlink
15.2 サブモジュール
15.2.1 サブモジュール導入の理由
15.2.2 サブモジュールの操作
15.3 サブモジュールと認証情報の再利用
15.4 Gitサブツリー
15.4.1 サブプロジェクトの追加
15.4.2 サブプロジェクトの更新のプル
15.4.3 スーパープロジェクトからのサブプロジェクトの変更
15.5 GitサブモジュールとGitサブツリーの図による比較
15.6 まとめ
16章 高度な操作
16.1 ハンクの対話的なステージング
16.2 git rev-listの活用法
16.2.1 日付に基づくチェックアウト
16.2.2 古いバージョンのファイルの入手
16.3 迷子のコミットの復活
16.3.1 git fsckコマンド
16.3.2 迷子のコミットを再び到達可能にする方法
16.4 git filter-repoの使い方
16.4.1 git filter-repoの使用例
16.5 まとめ
第V部 ヒントとコツ
17章 ヒントとコツとテクニック
17.1 作業ディレクトリがダーティな状態での対話的なリベース
17.2 ガベージコレクション
17.3 コミットを修復し損なわないようにするためのヒント
17.4 上流のリベースへの対処
17.5 変更の概要の手軽な確認
17.6 クリーンアップ
17.7 git grepを使ったリポジトリの検索
17.8 refの更新と削除
17.9 移動したファイルのフォロー
17.10 いつか来た道だけど…
17.11 Gitへの移植
17.11.1 Gitで管理されたリポジトリの移植
17.11.2 Git以外のバージョン管理システムからの移植
17.11.3 大規模なリポジトリの移植に関するメモ
17.12 Git LFS
17.12.1 Git LFS導入前後のリポジトリの違い
17.12.2 Git LFSのインストール
17.12.3 Git LFSによる巨大オブジェクトの追跡
17.12.4 Git LFSの役に立つテクニック
17.12.5 Git LFSを使っていない既存リポジトリからのコンバージョン
17.13 まとめ
18章 GitとGitHub
18.1 GitHubについて
18.2 GitHubアカウントのタイプ
18.3 GitエコシステムにおけるGitHubの位置
18.4 GitHubでのリポジトリのホスティング
18.4.1 リポジトリ画面
18.4.2 コード画面
18.4.3 イシュー
18.4.4 プルリクエスト
18.5 GitHubフロー
18.6 GitHubでのマージコンフリクトの解決
18.7 開発ワークフロー
18.8 GitHubの機能の統合
18.9 まとめ
付録A Gitの歴史
A.1 Gitの誕生
A.2 先行システム
A.3 リリースの経緯
A.4 Gitという名前の意味
付録B Gitのインストール方法
B.1 Linuxのバイナリディストリビューションの利用
B.1.1 Debian/Ubuntu
B.1.2 その他のバイナリディストリビューション
B.2 macOSへのGitのインストール
B.3 WindowsへのGitのインストール
B.4 ソースリリースの入手方法
B.5 ソースリリースからのビルド、インストール
索引
コラム目次
監訳補 Windowsでのサブコマンドのドキュメントの表示
監訳補 git restoreによる削除したファイルの復元
GUID
SHA-1ハッシュ値は一意だと言えるのか
ブランチとタグの違い
ブランチ操作のための新しい実験的なコマンド
マージされたブランチのベースブランチ情報
集合演算としてのコミット範囲
名称変更追跡が抱える問題
監訳補 .gitignoreのパターンマッチの確認
監訳補 誤った操作の取り消し
複数のリモートリポジトリ
サーバーという単語について
ピアツーピアバックアップとしてのGit
範囲に含まれるコミットの判定方法詳説
濱野純によるフック概説
Gitの日付解釈
パッキングのヒューリスティクス
監訳補 意図しない名前とメールアドレスの公開に注意
監訳補 改行コードと文字エンコーディングに関する設定